package org.infoset.xml;

import java.util.*;
import java.io.*;

/**
 * This interface represents a infoset item in an XML document.  
 * @author <a href="mailto:alex@milowski.com">R. Alexander Milowski</a>
 */

public interface Child extends Item {

   /**
    * Returns an iterator of the axis specified.
    */
   Iterator<Item> getAxis(Infoset.Axis type);
   
   /**
    * Returns the document in which this child is contained.
    */
   Document getDocument();

   /**
    * Returns the origin of this node.  This is either the element on which
    * the attribute is declared or the parent of the node.
    */
   Parent getParent();

   /**
    * Returns the following sibling of this node.
    * @return An instance of Item or null.
    */
   Child getFollowingSibling();

   Iterator getFollowingSiblings();
   
   /**
    * Returns the preceeding sibling to this node.
    */
   Child getPrecedingSibling();

   Iterator getPrecedingSiblings();
   
   /**
    * Compares this node to another node returning 1, 0, or -1.
    * @param other The node with which to compare.
    */
   int compareTo(Item other);

}




